package config

import (
	"flag"
	"log"
	"os"

	"gopkg.in/yaml.v2"
)

// Config 系统配置
type Config struct {
	Server   ServerConf
	DB       DBConfig
	Redis    RedisConf
	Logger   LoggerConf
	Security SecurityConf
}

var configPath = flag.String("conf", "config.yml", "config file path")

// Init 初始化配置文件
func Init() *Config {
	flag.Parse()

	conf := &Config{}
	log.Printf("load config file: %s", *configPath)
	// 读取配置文件
	data, err := os.ReadFile(*configPath)
	if err != nil {
		log.Fatalf("read %s fail, err: %v", *configPath, err)
	}

	// 解析yml文件
	err = yaml.Unmarshal(data, conf)
	if err != nil {
		log.Fatalf("parse config.yml fail, err: %v", err)
	}

	return conf
}
